package com.ruoyi.sl.service.impl;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.sl.domain.SlRwork;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.sl.mapper.SlAttendanceMapper;
import com.ruoyi.sl.domain.SlAttendance;
import com.ruoyi.sl.service.ISlAttendanceService;

/**
 * 出勤天数Service业务层处理
 * 
 * @author admin
 * @date 2024-06-11
 */
@Service
public class SlAttendanceServiceImpl implements ISlAttendanceService 
{
    @Autowired
    private SlAttendanceMapper slAttendanceMapper;

    /**
     * 查询出勤天数
     * 
     * @param attendanceId 出勤天数主键
     * @return 出勤天数
     */
    @Override
    public SlAttendance selectSlAttendanceByAttendanceId(Long attendanceId)
    {
        return slAttendanceMapper.selectSlAttendanceByAttendanceId(attendanceId);
    }

    /**
     * 查询出勤天数列表
     * 
     * @param slAttendance 出勤天数
     * @return 出勤天数
     */
    @Override
    public List<SlAttendance> selectSlAttendanceList(SlAttendance slAttendance)
    {
        return slAttendanceMapper.selectSlAttendanceList(slAttendance);
    }

    /**
     * 查询指定报工人和日期的出勤信息
     *
     * @param slRwork 报工人和报工日期
     * @return 出勤人集合
     */
    @Override
    public List<SlAttendance> selectSlAttendanceByRwork(SlRwork slRwork){
        return slAttendanceMapper.selectSlAttendanceByRwork(slRwork);
    }

    /**
     * 查询指定报工单的出勤人信息
     *
     * @param rfworkId 报工单ID
     * @return 出勤人集合
     */
    @Override
    public List<SlAttendance> selectAllSlAttendanceByRfworkId(Long rfworkId){
        return slAttendanceMapper.selectAllSlAttendanceByRfworkId(rfworkId);
    }

    /**
     * 查询批量报工人和日期的出勤天数
     *
     * @param list 报工人和报工日期
     * @return 出勤天数
     */
    @Override
    public BigDecimal selectAttendanceDaysByList(List<SlRwork> list) {
        return slAttendanceMapper.selectAttendanceDaysByList(list);
    }

    /**
     * 查询指定人的出勤天数
     *
     * @param list 报工人和报工日期
     * @param userName 指定人
     * @return 出勤天数
     */
    @Override
    public BigDecimal selectAttendanceDaysByUser(List<SlRwork> list, String userName) {
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("list",list);
            params.put("userName",userName);
        return slAttendanceMapper.selectAttendanceDaysByUser(params);
    }

    //根据报工单ID，查询总结算天数
    @Override
    public BigDecimal selectAllSettlementDaysByRfworkId(Long rfworkId){
        return slAttendanceMapper.selectAllSettlementDaysByRfworkId(rfworkId);
    }

    /**
     * 新增出勤天数
     * 
     * @param slAttendance 出勤天数
     * @return 结果
     */
    @Override
    public int insertSlAttendance(SlAttendance slAttendance)
    {
        return slAttendanceMapper.insertSlAttendance(slAttendance);
    }

    /**
     * 修改出勤天数
     * 
     * @param slAttendance 出勤天数
     * @return 结果
     */
    @Override
    public int updateSlAttendance(SlAttendance slAttendance)
    {
        return slAttendanceMapper.updateSlAttendance(slAttendance);
    }

    /**
     * 批量删除出勤天数
     * 
     * @param attendanceIds 需要删除的出勤天数主键
     * @return 结果
     */
    @Override
    public int deleteSlAttendanceByAttendanceIds(Long[] attendanceIds)
    {
        return slAttendanceMapper.deleteSlAttendanceByAttendanceIds(attendanceIds);
    }

    /**
     * 删除出勤天数信息
     * 
     * @param attendanceId 出勤天数主键
     * @return 结果
     */
    @Override
    public int deleteSlAttendanceByAttendanceId(Long attendanceId)
    {
        return slAttendanceMapper.deleteSlAttendanceByAttendanceId(attendanceId);
    }

    /**
     * 删除出勤天数信息
     *
     * @param slRwork 报工人和报工日期
     * @return 结果
     */
    @Override
    public int deleteSlAttendanceByRwork(SlRwork slRwork) {
        return slAttendanceMapper.deleteSlAttendanceByRwork(slRwork);
    }
}
